﻿using MyBlog2.Models;
using MyBlog2.ViewModels;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;

namespace MyBlog2.Repository
{
    public interface IArticleRepository
    {
        Article GetOneArticle(int id);  //获取一个文章
        List<Article> GetArticleList(int pageIndex, int pageSize, out int totalPageCount);  //分页获取文章列表
        List<Article> GetArticleListTop(Expression<Func<Article, bool>> where, int topCount);     //获取文章前x条
        List<Article> GetRecentArticles(int top);   //最新文章
        int GetArticleCount(Expression<Func<Article, bool>> where);     //获取文章总数 

        List<Article> GetArticleListByClassifyId(int id);  //根据分类id获取文章列表
        List<Article> GetArticleListByTagId(int id);   //根据标签id获取文章列表

        List<int> GetYears();   //获取所有文章年份
        Dictionary<int, IEnumerable<Article>> ArticleArchive(List<int> years);    //按年归档

        //List<Article> SearchArticles(List<Expression<Func<Article, bool>>> where);      //搜索文章(全匹配)

        List<Article> SearchArticles(Expression<Func<Article, bool>> where);      //搜索文章
        void UpdateViews(Article article);     //更新浏览次数
        Article AddArticle(Article article);  //添加文章
        Article EditArticle(Article article); //编辑文章
        bool DeleteArticle(int id);   //删除文章
    }
}
